# 创建一个 map
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
print(d['Michael'])

m = dict([('Michael', 95), ('Bob', 75), ('Tracy', 85)])
print(m)

# zip 函数的使用
obj = zip(['a', 'b', 'c'], [1, 2, 3])
print(obj)
print(list(obj))

# 将 obj 转为元组，必须是一个新的对象
obj = zip(['a', 'b', 'c'], [1, 2, 3])
print(tuple(obj))

# 将 map 转为字典
obj = zip(['a', 'b', 'c'], [1, 2, 3])
print(dict(obj))

# 使用参数创建map
d = dict(cat=10, dog=20) # 参数相当于变量，无需加引号
print(d)

# 元组做键，不可变类型可做键
d = {(1, 2, 3): 10, (4, 5, 6): 20}
print(d)

d = {'cat': 10, 'dog': 20}
print('max:', max(d))
print('min:', min(d))

del d['cat']
print(d)

# map 的访问
d = {'apple': 10, 'orange': 20, 'banana': 30}
# 通过键访问，如果键不存在，会报错
print(d['apple'])
# 通过 get 方法访问，如果键不存在，返回 None
print(d.get('java'))

# map 的遍历
d = {'apple': 10, 'orange': 20, 'banana': 30}
# 获取键 值
for key in d:
    print(key, d[key])

# 获取元组
for item in d.items():
    print(item)

# 获取键
for key in d.keys():
    print(key)

# 获取值
for value in d.values():
    print(value)

# pop key 存在获取相应的 value，同时删除 key-value对，否则获取默认值
d = {'apple': 10, 'orange': 20, 'banana': 30}
print(d.pop('apple'))

# popitem 随机删除一个 key-value 对，返回元组
d = {'apple': 10, 'orange': 20, 'banana': 30}
print(d.popitem())
print(d)

# clear 清空 map
d = {'apple': 10, 'orange': 20, 'banana': 30}
d.clear()
print(d)

# 生成式
# 生成一个字典
d = {x: x * x for x in range(1, 11)}
print(d)

# zip 函数创建字典
d = dict(zip(['a', 'b', 'c'], [1, 2, 3]))
print(d)
